One or more aspects relate, in general, to processing within a computing environment, and, in particular, to the portability of programs across systems of different architectures.
Computer systems have evolved into sophisticated devices, and may be found in many different settings. Advances in both hardware and software (e.g., computer programs) have improved the performance of computer systems. Modern computer programs have become very complex when compared to early computer programs. Many modern computer programs have tens or hundreds of thousands of instructions. The execution time (and hence, performance) of a computer program is very closely related to the number and complexity of instructions that are executed as the computer program runs. Thus, as the size and complexity of computer programs increase, the execution time of the computer program increases as well.
Unlike early computer programs, modern computer programs are typically written in a high-level language that is easy to understand by a human programmer. Special software tools known as compilers take the human-readable form of a computer program, known as “source code”, and convert it into “machine code” or “object code” instructions that may be executed by a computer system. Because a compiler generates the stream of machine code instructions that are eventually executed on a computer system, the manner in which the compiler converts the source code to object code affects the execution time of the computer program.
The execution time of a computer program, especially complex computer programs, is a function of the arrangement and type of instructions within the computer program. The way compilers generate instructions thus significantly affects the run-time performance of the code generated by the compiler.
To enhance performance of computer programs, vector programming may be employed that enables parallel processing. Vector programming often uses vector built-ins or intrinsics, which map to underlying hardware instructions. This approach, however, has limitations relating to, for instance, system portability of programs.